Service Mesh
サービスメッシュ_
マイクロサービスアーキテクチャでのサービス間の通信を制御・管理するためのインフラ層
背景
マイクロサービスアーキテクチャでは、サービス間の通信が複雑になる
例えば以下のような課題が生じる
サービス間通信の認証・暗号化
冗長化・リトライ・タイムアウト制御
通信の可視化(メトリクス・トレーシング)
A/Bテスト、カナリアリリースのルーティング制御
これらをアプリケーション内に実装すると大変
Service Meshは、これらをインフラとして提供できる
実装・仕組み
Sidebarパターンが多い
各サービスの Pod 内に、Sidebarを配置する
サービス間通信は必ずサイドカーを経由する
サイドカーが通信制御、認証、暗号化、リトライ、メトリクス収集を担当する
特徴
Service Discovery
サービスの位置を自動検出
ロードバランシング
各インスタンスへの通信を分散
トラフィック制御
カナリアリリース、A/Bテスト、フェイルオーバー
セキュリティ
mTLS(サービス間通信の暗号化)、認証、認可
オブザーバビリティ
メトリクス、ログ、トレース収集
例
Istio
Kubernetes の事実上のデファクト
機能が非常に豊富で学習コストが高いが柔軟
Linkerd
軽量でシンプル
メトリクスとセキュリティに強み
Consul
Kubernetes だけでなく VM にも対応しやすい